In computer graphics systems, an image is produced on a visual display screen. The information by which this visual image is generated is stored in a screen refresh random access memory on a one-to-one or pixel-to-storage site basis. That is, for each pixel of the visual image display, there is a corresponding storage site in the random access memory (RAM) which contains data corresponding to and describing the visual information of that pixel. In order to display the information from the screen refresh RAM, the data from the screen refresh RAM are periodically read out on a line-by-line basis and displayed on a line-by-line basis in the visual display of the system. Typical of these displays are raster scanning devices such as high density television monitors which have a large number of horizontially displayed scan lines.
In order to write information into the screen refresh RAM, an X and a Y address are supplied to the RAM, along with the data to be written thereby. A write enable signal is supplied to the RAM to write the data into the addressed storage site. This process must be repeated for each storage site into which data are to be written. This entails supplying a different address for each different storage site being writen into.
It is well-known that the speed at which these write operations can occur is limited by the RAM access time; i.e., the amount of time that the address and data are required to be present before the RAM can accurately respond to the information. It is also well-known that the speed by which data can be written into the RAM is limited by the speed at which the addressing of the RAM occurs.
The speed with which data can be written into a screen refresh RAM has a direct impact upon the performance of a graphics display system. For example, when extensive images are sought to be written into the screen refresh RAM, there will be a substantial time delay during which the write operation is being executed. In turn, this slows the operation of the entire system, as well as detracts from the operation of the system as a tool which assists in a design or display process.
Another common but time-consuming operation involves the filling-in of surfaces of the image being displayed so as to provide an appearance of solidness or shading, or the like. In the past, this surface-fill or polygon-fill operation was accomplished: (1) by defining a number of line segments which bound the surface to be filled, (2) by deriving first order equations which were descriptive of each of the line segments, the equations being in the form of Y=mX+b, where Y and X are coordinate values, m is the slope of the line segment, and b is the offset of the line segment from a reference point, (3) by obtaining the value of X for specific values of Y, and (4) by using the values of X obtained for each Y coordinate as end points for horizontal line segments. The end points would then be supplied to a vector generator, which, in turn, would write the corresponding horizontal line segments to fill-in the surface bounded by the previously defined line segments.
The above-described approach has several disadvantages. First, the calculations required are timeconsuming and involve both additive and multiplicative operations. Secondly, it can be shown that the values obtained from evaluating the above-identified equation are often in non-integer form. For example, for a line having a slope of minus 4/5, and an offset of 4, values for X will be 5, 15/4, 5/2, 5/4 and 0, for Y values of 0, 1, 2, 3, and 4, respectively. Thus, in order to be usable in a digital graphics system which forms images from discrete points, the X values are required to be rounded to integer numbers. This results in inconsistencies in the manner in which the end points of the horizontal vectors are defined and, thus, the manner in which the surfaces are filled in.